package com.pine.dbant.common.model;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * @author xiaoyuan
 * @create 2021/12/3 17:02
 **/
@Data
public class Index {


    /**
     * 同indexName
     */
    private String key;

    /**
     * 库名称
     */
    private String catalogName;

    /**
     * schema
     * TABLE_SCHEM
     */
    private String schemaName;

    /**
     * 表名
     * TABLE_NAME
     */
    private String tableName;

    /**
     * 索引名称
     * INDEX_NAME
     */
    private String indexName;

    /**
     * 索引类型
     * TYPE
     *
     * @see java.sql.DatabaseMetaData
     * tableIndexStatistic 0 表示此列包含与表的索引描述一起返回的表统计信息。
     * tableIndexClustered 1 表示此表索引是聚簇索引。
     * tableIndexHashed 2 表示此索引是散列索引。
     * tableIndexOther 3 表示此表索引不是聚簇索引，散列索引或表统计信息; 这是其他的东西。
     */
    private Short indexType;

    /**
     * 索引类别（可为 null）；TYPE 为 tableIndexStatistic 时索引类别为 null
     */
    private String indexQualifier;


    /**
     * 该列在索引中的位置, 从1开始
     * ORDINAL_POSITION
     * 例如索引 idx(id,name),  id位置=1, name位置=2
     */
    private Short ordinalPosition;

    /**
     * 索引是否非唯一
     * 若为唯一索引，则该值为false;  否则为true
     * NON_UNIQUE
     */
    private Boolean nonUnique;

    /**
     * 字段名字
     */
    private String columnName;

    /**
     * 字段顺序:
     * 列排序序列，”A” => 升序，”D” => 降序，如果排序序列不受支持，可能为 null；TYPE 为 tableIndexStatistic 时排序序列为 null
     */
    private String columnSort;
    /**
     * 其他参数
     */
    private Map<String, Object> properties = new HashMap<>();
}
